package com.wjk.kylin.rpc.core.invoker.annotation;


import com.wjk.kylin.rpc.core.invoker.call.CallType;
import com.wjk.kylin.rpc.core.invoker.route.LoadBalance;

import java.lang.annotation.*;

/**
 * rpc service annotation, skeleton of stub ("@Inherited" allow service use "Transactional")
 * @author wjk
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface RpcReference {

    /**
     * 接口版本
     *
     * @return
     */
    String version() default "";

    /**
     * 接口超时时间，默认-1，永久
     *
     * @return
     */
    long timeout() default -1;

    /**
     * 负载均衡
     */
    LoadBalance.Route loadBalance() default LoadBalance.Route.Round;

    /**
     * 调用方式
     * @return
     */
    CallType callType() default CallType.SYNC;

}
